自动计算表达式的值

    有些情况下,比如工程结算单,通常在左边一个单元格写上表达式,比如:5*6-3,方便别人核对计算过程,右边一个单元格放置计算结果,比如:27。

      如果发现左边单元格中的计算表达式不对,进行了修改,比如修改为:5*5-6,那么右边单元格必须立刻根据左边单元格的表达式,自动更新结果19。

   

      如果要实现这样的功能,表面上看起来很难,实际上只要用好Evaluate功能就很简单。

(特别说明:因EVALUATE为4.0宏函数,在工作表中不能直接使用,只能在定义单元格名称、宏(VBA代码)中使用)

 

    方法一:

    难度系数:很难

    比如A1单元格中放置表达式,A2单元格放置计算结果,那么,

    1、先选中B1单元格,依次点击:菜单->插入->名称->定义:x=EVALUATE(A1),点确定。

  自动计算表达式的值 
      <wbr>EXCEL(15)

  2、在B1单元格输入公式:=x

      这时候,如果A1单元格中是表达式:5*5-6,这时候A2的值就会为19:

    自动计算表达式的值 
      <wbr>EXCEL(15)

  (补充说明:如果A1没有内容,或者根本不是可以进行运算的表达式,那么B1单元格的公式可以设置为=IF(NOT(ISERR(x)),x,0)这样可以过滤掉错误结果,了解IF函数的神奇,请参阅:https://www.ahzll.top/HELP/PAGE/blog_5488e3a901007syw.html

  如果要同样的方法计算B2,b3...,只要进行拖动复制就可以了。

   

 

    方法二:自定义函数

      难度系数:较难

    第一步:添加自定义函数 

在当前文档的VisualBasic工程中添加一个模块,并输入下面的函数:

      FunctionJS(表达式 As String)
          JS =Application.Evaluate(表达式)
    End Function

自动计算表达式的值 
      <wbr>EXCEL(15)

特别提示:

搞工程的朋友可能经常用到表达式的长度超过255个字符,上面这个JS函数就不能用了,要用SuperJS函数:

Function SuperJS(表达式 As String)
        With CreateObject("MSScriptControl.ScriptControl")
                .Language = "vbscript"
                  SuperJS = .eval_r(表达式)
        End With
End Function   

 

 

  第二步:使用JS函数  SuperJS函数

  添加完函数后,回到工作表,这时就可以和其他函数一样使用js函数了。 

比如在单元格输入 =js(A1),若A1单元格内是个表达式 5*6-3,则返回这个表达式的运算结果27。

  自动计算表达式的值 
      <wbr>EXCEL(15)

 

 

  方法三:使用EXCEL必备工具箱

  难度系数:容易

(请注意:本功能在EXCEL必备工具箱  5.56版开始提供)

  下载地址:http://www.skycn.com/soft/43616.html

  参阅:https://www.ahzll.top/HELP/PAGE/blog_5488e3a90100cfec.html

  在“工具集锦”里的“函数”  功能里,会自动给当前文档添加方法二介绍的函数,然后在工作表中,可以和其他函数一样使用js函数来计算表达式的值。 

 

特别感谢网友YXC提供资料